package net.cyue.web.easyquery.core.http.api;

import net.cyue.web.easyquery.core.http.handler.api.IWebRequestHandler;

/**
 * HTTP服务接口
 */
public interface IHTTPServer {

    /**
     * 添加通用路由
     * @param handler 处理器
     */
    default boolean use(IWebRequestHandler handler) {
        return all(handler);
    }

    /**
     * 添加通用路由
     * @param path 路径
     * @param handler 处理器
     */
    default boolean use(String path, IWebRequestHandler handler) {
        return all(path, handler);
    }

    /**
     * 添加 get 方法路由
     * @param handler 处理器
     */
    boolean get(IWebRequestHandler handler);

    /**
     * 添加 get 方法路由
     * @param path 路径
     * @param handler 处理器
     */
    boolean get(String path, IWebRequestHandler handler);

    /**
     * 添加 post 方法路由
     * @param handler 处理器
     */
    boolean post(IWebRequestHandler handler);

    /**
     * 添加 post 方法路由
     * @param path 路径
     * @param handler 处理器
     */
    boolean post(String path, IWebRequestHandler handler);

    /**
     * 添加 head 方法路由
     * @param handler 处理器
     */
    boolean head(IWebRequestHandler handler);

    /**
     * 添加 head 方法路由
     * @param path 路径
     * @param handler 处理器
     */
    boolean head(String path, IWebRequestHandler handler);

    /**
     * 添加 delete 方法路由
     * @param handler 处理器
     */
    boolean delete(IWebRequestHandler handler);

    /**
     * 添加 delete 方法路由
     * @param path 路径
     * @param handler 处理器
     */
    boolean delete(String path, IWebRequestHandler handler);

    /**
     * 添加 put 方法路由
     * @param handler 处理器
     */
    boolean put(IWebRequestHandler handler);

    /**
     * 添加 put 方法路由
     * @param path 路径
     * @param handler 处理器
     */
    boolean put(String path, IWebRequestHandler handler);

    /**
     * 添加 patch 方法路由
     * @param handler 处理器
     */
    boolean patch(IWebRequestHandler handler);

    /**
     * 添加 patch 方法路由
     * @param path 路径
     * @param handler 处理器
     */
    boolean patch(String path, IWebRequestHandler handler);

    /**
     * 添加 options 方法路由
     * @param handler 处理器
     */
    boolean options(IWebRequestHandler handler);

    /**
     * 添加 options 方法路由
     * @param path 路径
     * @param handler 处理器
     */
    boolean options(String path, IWebRequestHandler handler);

    /**
     * 添加通用路由
     * @param handler 处理器
     */
    boolean all(IWebRequestHandler handler);

    /**
     * 添加通用路由
     * @param path 路径
     * @param handler 处理器
     */
    boolean all(String path, IWebRequestHandler handler);
}
